package com.xs.ai.services;

import jakarta.annotation.PostConstruct;
import org.springframework.ai.document.Document;
import org.springframework.ai.vectorstore.VectorStore;
import org.springframework.stereotype.Service;

import java.util.Arrays;
import java.util.List;

/**
 * @author hhl
 * @version 1.0
 * @description 知识库加载服务
 * @date 2025/8/4 23:56
 */
// 创建一个知识库加载服务
@Service
public class KnowledgeBaseLoader {

    private final VectorStore vectorStore;

    public KnowledgeBaseLoader(VectorStore vectorStore) {
        this.vectorStore = vectorStore;
    }

    @PostConstruct
    public void loadKnowledgeBase() {
        // 示例：加载航空公司政策信息
        List<Document> documents = Arrays.asList(
                // 行李政策
                new Document("Tuling航空公司行李政策：每位乘客可免费托运20公斤行李，超重部分按每公斤50元收费。"),
                new Document("Tuling航空公司手提行李政策：经济舱乘客可携带1件手提行李，重量不超过7公斤，尺寸不超过55x40x20厘米。"),
                new Document("Tuling航空公司行李特殊规定：易碎品、贵重物品请随身携带，航空公司不对托运的易碎品损坏负责。"),

                // 退票政策
                new Document("Tuling航空公司退票政策：起飞前24小时以上退票收取10%手续费，24小时内收取30%手续费。"),
                new Document("Tuling航空公司特殊票价退票规定：特价机票不可退票，仅限改签并需补差价。"),
                new Document("Tuling航空公司团体票退票规定：团体票退票需在起飞前72小时申请，收取20%手续费。"),

                // 改签政策
                new Document("Tuling航空公司改签政策：起飞前48小时以上免费改签，24-48小时内收取100元改签费。"),
                new Document("Tuling航空公司航班变更改签规定：因天气等不可抗力因素导致的航班变更，可免费改签或退票。"),
                new Document("Tuling航空公司改签差价规定：改签至更高票价航班需补足差价，改签至低票价航班不退还差价。"),

                // 值机和登机政策
                new Document("Tuling航空公司值机时间规定：国内航班起飞前30分钟停止办理值机，国际航班起飞前60分钟停止办理值机。"),
                new Document("Tuling航空公司网上值机时间规定：可在起飞前48小时至起飞前1小时在线办理值机。"),
                new Document("Tuling航空公司登机时间规定：航班起飞前15分钟停止登机，请合理安排到达机场时间。"),

                // 会员政策
                new Document("Tuling航空公司会员积分政策：每消费1元积1分，里程按实际飞行距离计算，金银卡会员享受额外积分奖励。"),
                new Document("Tuling航空公司会员等级权益：银卡会员享受额外行李额度，金卡会员享受贵宾休息室和优先登机权益。"),
                new Document("Tuling航空公司里程有效期：会员里程自产生之日起36个月内有效，可兑换免费机票或升舱服务。"),

                // 航班服务
                new Document("Tuling航空公司餐食服务：所有航班提供免费饮品，飞行时间超过2小时的航班提供免费餐食。"),
                new Document("Tuling航空公司机上娱乐：所有航班配备个人娱乐系统，提供电影、音乐和游戏等娱乐内容。"),
                new Document("Tuling航空公司特殊旅客服务：为老人、儿童、孕妇和残疾人士提供特殊协助服务，需提前申请。"),

                // 航班延误和取消
                new Document("Tuling航空公司航班延误补偿规定：延误超过4小时提供餐食和住宿，延误超过8小时可申请现金补偿。"),
                new Document("Tuling航空公司航班取消补偿规定：航班取消可免费改签或退票，并根据延误时间提供相应补偿。"),
                new Document("Tuling航空公司不可抗力规定：因天气、空中管制等不可抗力因素导致的延误或取消，不提供现金补偿。"),

                // 安全和紧急情况
                new Document("Tuling航空公司安全规定：禁止携带易燃易爆物品登机，液体物品需遵守100毫升容量限制。"),
                new Document("Tuling航空公司紧急情况处理：发生紧急情况时请听从机组人员指挥，紧急出口座位乘客需具备协助能力。")
        );

        // 将文档存入向量存储
        vectorStore.add(documents);
    }

}
